Перейти к основному содержимому

12.4 Настройка PIM-DM

12.4.1 Обзор

Введение в функциональность

Protocol Independent Multicasting-Dense Mode (PIM-DM) — протокол маршрутизации для мультикастинга, разработанный для эффективной работы в глобальных сетях (WAN) с плотным распределением групп. Он помогает узлам сети, географически распределенным, экономить пропускную способность и уменьшать трафик, одновременно доставляя единственный поток информации в несколько мест.

PIM-DM предполагает, что при начале отправки данных источником все системы downstream хотят получать мультикастовые датаграммы. На начальном этапе мультикастовые датаграммы заливаются во все области сети. PIM-DM использует механизм RPF для предотвращения зацикливания мультикастовых датаграмм во время заливки. Если в некоторых областях сети отсутствуют члены группы, PIM-DM обрезает ветви пересылки, создавая состояние Prune.

Состояние Prune имеет конечный срок действия. После истечения этого срока данные снова начинают передаваться через ранее обрезанную ветвь. Состояние Prune связано с парой (S,G). Если в области, где был выполнен Prune, появляется новый член группы G, маршрутизатор может выполнить "Graft" к источнику S для группы, тем самым преобразуя обрезанную ветвь обратно в ветвь пересылки.

Принцип работы

Модуль PIM-DM основан на стандарте IETF: RFC 3973.

12.4.2 Конфигурация

Рисунок 12-3: PIM-DM

Рисунок 12-3: PIM-DM

PIM-DM — soft-state протокол. Основным требованием является включение PIM-DM на нужных интерфейсах. Все состояния мультикастовых групп поддерживаются динамически в результате обработки сообщений IGMP Report/Leave и PIM.

В этом разделе приведены примеры конфигурации PIM-DM для двух соответствующих сценариев. На следующей схеме показана топология сети, используемая в этих примерах:

В данном примере, используя указанную топологию, мультикастовый поток поступает на интерфейс eth-0-1 Switch1, а хост подключен к интерфейсу eth-0-1 Switch2.

Шаг 1: Вход в режим конфигурации

Switch# configure terminal

Шаг 2: Настройка интерфейсов, атрибутов и включение PIM-DM

Настройка на Switch1:

Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 11.1.1.1/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit

Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.1/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit

Настройка на Switch2:

Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 22.1.1.2/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit

Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.2/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit

Шаг 3: Добавление статических маршрутов

На Switch1:

Switch(config)# ip route 22.1.1.0/24 12.1.1.2

На Switch2:

Switch(config)# ip route 11.1.1.0/24 12.1.1.1

Шаг 4: Выход из режима конфигурации

Switch(config)# end

Шаг 5: Проверка

Просмотр деталей интерфейса для Switch1:

Switch# show ip pim dense-mode interface 
Address Interface VIFIndex Ver/ Nbr
Mode Count
11.1.1.1 eth-0-1 0 v2/D 0
12.1.1.1 eth-0-9 1 v2/D 1

Просмотр соседей для Switch1:

Switch# show ip pim dense-mode neighbor
Neighbor-Address Interface Uptime/Expires Ver
12.1.1.2 eth-0-9 00:01:00/00:01:44 v2

Просмотр таблицы маршрутизации мультикастов:

На Switch1:

Switch# show ip pim dense-mode mroute 
PIM-DM Multicast Routing Table
(11.1.1.2, 225.1.1.1)
Source directly connected on eth-0-1
State-Refresh Originator State: Originator
Upstream IF: eth-0-1
Upstream State: Forwarding
Assert State: NoInfo
Downstream IF List:
eth-0-9, in 'olist':
Downstream State: NoInfo
Assert State: NoInfo

На Switch2:

Switch# show ip pim dense-mode mroute 
PIM-DM Multicast Routing Table
(11.1.1.2, 225.1.1.1)
RPF Neighbor: none
Upstream IF: eth-0-9
Upstream State: AckPending
Assert State: NoInfo
Downstream IF List:
eth-0-1, in 'olist':
Downstream State: NoInfo
Assert State: NoInfo